package cn.bdqn.service;


import cn.bdqn.domain.User;
import cn.bdqn.utils.result.Page;

import java.util.List;

/**
 * 用户业务层
 * @author dkj
 */
public interface UserService {

    /**
     * 添加机构角色
     * @param user 新建角色
     */
    void addUser(User user);

    /**
     * 更新用户
     * @param user 更新后的角色
     */
    void updateUser(User user);

    /**
     * 删除一个用户
     * @param id 指定的用户id
     */
    void deleteUserById(Integer id);

    /**
     * 根据机构删除该机构下的所有角色
     * @param groupId
     */
    void deleteUserByGroupId(Integer groupId);

    /**
     *  根据指定的信息查询用户信息
     * @param user 封装了查询到信息的对象
     * @return 返回查询出来的用户
     */
    User selectUserByInfo(User user);

    /**
     * 根据id查询信息
     * @param id
     * @return
     */
    User selectById(Integer id);


    /**
     * 判断用户是否存在 根据电话号码
     * @param phone 电话号码
     * @return
     */
    Boolean selectUserByPhone(String phone);

    /**
     * 判断用户是否存在 根据邮箱
     * @param email 邮箱
     * @return
     */
    Boolean selectUserByEmail(String email);


    /**
     * 根据机构id查询角色 （分页）
     * @param startNum 起始页
     * @param groupId 机构
     * @param pageSize 每页的数量
     * @return
     */
    Page<User> selectUsersByGroupId(Integer startNum,Integer pageSize,Integer groupId);

    /**
     * 查询全部未禁用的用户
     * @return
     */
    List<User> queryAll();
}
